package com.aaa.yunMall.service;

import com.aaa.yunMall.base.BaseService;
import com.aaa.yunMall.vo.TokenVo;
import org.springframework.stereotype.Service;

import java.util.UUID;

/**
 * @author LQY
 * @date 2020-07-15 19:01
 */
@Service
public class LoginService extends BaseService<User> {

    /**
     * 执行登陆操作
     *  pojo：实体类
     *  povo：封装类型（在实际开发中，会有很多情况导致多表联查的时候无法装载数据---->
     *                  我就根据返回前端的数据自己封装出一个对象---->view object）
     * @param user
     * @return
     */
    public TokenVo doLogin(User user){
        TokenVo tokenVo = new TokenVo();
        User user1 = new User();
        //判断user是否为空
        if(null != user){
            user1.setUsername(user.getUsername());
            User user2 = super.selectOne(user1);
            //判断user2是否为null
            if(null == user2){
                tokenVo.setIfSuccess(false).setType(1);
                return tokenVo;
            }else {
                //用户名ok，查询密码
                user1.setPassword(user.getPassword());
                User user3 = super.selectOne(user1);
                System.out.println(user3);
                // 判断user3是否为null
                if(null == user3){
                    tokenVo.setIfSuccess(false).setType(2);
                    return tokenVo;
                }else {
                    //登陆成功
                    /**
                     *mybatis是无法检测到连接符的，他会把连接符进行转译(\\-)
                     * 需要把连接符替换掉
                     */
                    String token = UUID.randomUUID().toString().replaceAll("-", "");
                    user3.setToken(token);
                    Integer updateResult = super.Update(user3);
                    if(updateResult > 0){
                        tokenVo.setIfSuccess(true).setToken(token);
                    }else {
                        tokenVo.setIfSuccess(false).setType(4);
                        return tokenVo;
                    }
                }
            }
        }else {
            tokenVo.setIfSuccess(false).setType(4);
            return tokenVo;
        }
        return tokenVo;
    }

}
